<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>JavaServer Faces</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/JavaServer_Faces"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-JavaServer_Faces rootpage-JavaServer_Faces skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">JavaServer Faces</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p><b>JavaServer Faces</b><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> (abrégé en <b>JSF</b>) est un <a href="Framework" title="Framework">framework</a> <a href="Java_(langage)" title="Java (langage)">Java</a>, pour le développement d'<a href="Applications_Web" class="mw-redirect" title="Applications Web">applications Web</a>.
</p><p>À l'inverse des autres frameworks <b><a href="Mod%C3%A8le-Vue-Contr%C3%B4leur" class="mw-redirect" title="Modèle-Vue-Contrôleur">MVC</a></b> traditionnels à base d'actions, JSF est basé sur la notion de <a href="Programmation_orient%C3%A9e_composant" title="Programmation orientée composant">composants</a>, comparable à celle de <a href="Swing_(Java)" title="Swing (Java)">Swing</a> ou <a href="Standard_Widget_Toolkit" title="Standard Widget Toolkit">SWT</a>, où l'état d'un composant est enregistré lors du rendu de la page, pour être ensuite restauré au retour de la requête.
</p><p>JSF est agnostique à la technologie de présentation. Il utilise Facelets <a href="https://en.wikipedia.org/wiki/Facelets" class="extiw external" title="en:Facelets"><span class="indicateur-langue" title="Article en anglais : « Facelets »">(en)</span></a> par défaut depuis la version 2.0, mais peut être utilisé avec d'autres technologies, comme <a href="JavaServer_Pages" class="mw-redirect" title="JavaServer Pages">JSP</a> (qui était utilisé jusqu'à la version 1.2) ou <a href="XUL" class="mw-redirect" title="XUL">XUL</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Versions_de_JSF">Versions de JSF</h2></div>
<div class="mw-heading mw-heading3"><h3 id="JSF_1.0">JSF 1.0</h3></div>
<p>Première version des spécifications de JSF, est sortie le <time class="nowrap" datetime="2004-03-11" data-sort-value="2004-03-11">11 mars 2004</time>.
</p>
<div class="mw-heading mw-heading3"><h3 id="JSF_1.1">JSF 1.1</h3></div>
<p>Les spécifications JSF 1.1 sont définies dans la <a href="Java_Specification_Requests" title="Java Specification Requests">JSR</a> 127<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> du consortium <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a>, sorties le <time class="nowrap" datetime="2004-05-27" data-sort-value="2004-05-27">27 mai 2004</time>, celles-ci requièrent les bibliothèques suivantes :
</p>
<ul><li><a href="Servlets" class="mw-redirect" title="Servlets">Servlets</a> version 2.2</li>
<li><a href="JavaServer_Pages" class="mw-redirect" title="JavaServer Pages">JSP</a> version 1.2</li>
<li><a href="Java_(langage)" title="Java (langage)">Java</a> version 1.3</li></ul>
<div class="mw-heading mw-heading3"><h3 id="JSF_1.2">JSF 1.2</h3></div>
<p>Les spécifications de la version 1.2 sont définies dans la <a href="Java_Specification_Requests" title="Java Specification Requests">JSR</a> 252<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> sortie le <time class="nowrap" datetime="2006-05-11" data-sort-value="2006-05-11">11 mai 2006</time>, celles-ci requièrent les bibliothèques suivantes :
</p>
<ul><li><a href="Servlets" class="mw-redirect" title="Servlets">Servlets</a> version 2.5</li>
<li><a href="JavaServer_Pages" class="mw-redirect" title="JavaServer Pages">JSP</a> version 2.1</li>
<li><a href="Java_(langage)" title="Java (langage)">Java</a> version 1.5 (JSE 5.0)</li></ul>
<p>JSF 1.2 comprend un ensemble d'améliorations mineures à la spécification précédente, JSF 1.1 :
</p>
<ul><li>L'utilisation d'un <a href="XML_Schema" title="XML Schema">schéma</a> pour le <a href="Fichier_de_configuration" title="Fichier de configuration">fichier de configuration</a>, à la place d'une <a href="Document_Type_Definition" class="mw-redirect" title="Document Type Definition">DTD</a>.</li>
<li>Des améliorations pour pouvoir gérer plusieurs frames ou fenêtres d'une même application.</li>
<li>Quelques corrections pour des bugs.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="JSF_2.0">JSF 2.0</h3></div>
<p>Les spécifications de JSF 2.0 sont définies dans la <a href="Java_Specification_Requests" title="Java Specification Requests">JSR</a> 314<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> sortie le <time class="nowrap" datetime="2009-06-28" data-sort-value="2009-06-28">28 juin 2009</time>. Elle remplace les précédentes versions et correspond à la première mise à jour majeure des spécifications entrainant de nombreuses modifications, afin d'en faciliter l'utilisation, augmenter les fonctionnalités et les performances selon le <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a>. Cette sortie coïncide avec celle de <a href="Jakarta_EE" title="Jakarta EE">Java EE</a> 6.
</p>
<div class="mw-heading mw-heading3"><h3 id="JSF_2.1">JSF 2.1</h3></div>
<p>C'est donc la version anterieure a la version 2.2 de JSF sortie le <time class="nowrap" datetime="2010-10-22" data-sort-value="2010-10-22">22 octobre 2010</time>. Elle comporte uniquement des corrections mineures. De ce fait, elle s'appuie sur la même JSR que JSF 2.0.
</p>
<div class="mw-heading mw-heading3"><h3 id="JSF_2.2">JSF 2.2</h3></div>
<p>Version sortie en <time class="nowrap" datetime="2013-04" data-sort-value="2013-04">avril 2013</time>. Les spécifications sont définies dans la <a href="Java_Specification_Requests" title="Java Specification Requests">JSR</a> 344<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Constituants_de_JSF">Constituants de JSF</h2></div>
<p>JSF est constitué principalement de:
</p>
<ul><li>Un ensemble d'<a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">APIs</a> pour la représentation et la gestion des composants, de leur état, des évènements, de la validation des entrées et la conversion des sorties, l'internationalisation et l'accessibilité ainsi que la navigation inter-vues</li>
<li>Deux jeux de composants standards (affichage de texte, saisie de texte, tables, zone à cocher, etc.) : <i>html</i> et <i>core</i></li>
<li>Deux bibliothèques de balises JSP (une pour chaque jeu de composants) pour permettre l'utilisation des JSPs pour la construction de vues JSF</li>
<li>Un modèle évènementiel côté serveur</li>
<li>Les Managed-Beans : qui forment la couche contrôle de JSF</li>
<li><a href="Expression_Language" title="Expression Language">Unified Expression Language</a> (abrégé en EL) ou langage d'expressions unifié pour JSF et JSP 2.0. Il permet de lier les composants aux managed-beans</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Jeux_de_composants_additionnels">Jeux de composants additionnels</h2></div>
<p>Les deux jeux de composants standards de JSF s'avèrent trop limités et insuffisants pour le développement d'applications d'entreprise. Il est possible dès lors d'utiliser des jeux de composants additionnels qui offrent de nouveaux composants plus riches.
</p><p>On peut citer par exemple:
</p>
<ul><li>Primefaces<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>, un jeu de composants <a href="Open_source" title="Open source">open-source</a> supportant Ajax, Jsf 2, Push</li>
<li>ICEfaces, un jeu de composants open-source supportant Ajax, devenu depuis la version 3 une simple copie d'anciens composants de Primefaces</li>
<li><a href="JBoss" class="mw-redirect" title="JBoss">jBoss</a> <i>RichFaces</i> et <i>Ajax4JSF</i>, un jeu de composants open-source supportant Ajax (End of Life reached in June 2016)</li>
<li><a href="Apache_Software_Foundation" title="Apache Software Foundation">Apache</a> <i>Tomahawk</i>, un jeu de composants très riche et open-source</li>
<li>RCFaces, un jeu de composants très riche AJAX et open-source</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://java.sun.com/j2ee/javaserverfaces/">Site officiel de JSF</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=127">JSR 127</a> sur le site du <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=252">JSR 252</a> sur le site du <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=314">JSR 314</a> sur le site du <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=344">JSR 344</a></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://www.primefaces.org/">Site officiel de Primefaces</a></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/tutorial/doc/jsf-intro.htm">The JavaEE 7 tutorial</a>, partie JSF</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.jsfcentral.com/">JSF Central</a> : communauté JavaServer Faces</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.jsftutorials.net">JSF Tutoriels</a> : liens vers des articles sur JSF</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://memorynotfound.com/category/java/jsf/">JSF Tutorials Memorynotfound</a> JSF tutorials, Code Examples, Best Practices</li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2022-09-28" href="https://fr.wikipedia.org/wiki/?title=JavaServer_Faces&oldid=197318616">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>